package com.sunlee.admin.api.module.sys.service;

import com.sunlee.admin.api.module.security.user.UserDetail;
import com.sunlee.admin.api.module.sys.dto.SysMenuDTO;
import com.sunlee.admin.api.module.sys.entity.SysMenuEntity;
import com.sunlee.common.core.service.BaseService;

import java.util.List;


/**
 * 菜单管理
 *
 * @author sunlee
 */
public interface SysMenuService extends BaseService<SysMenuEntity> {

    /**
     * 通过主键查询菜单
     *
     * @param id 主键ID
     * @return 菜单数据
     */
    SysMenuDTO get(Long id);

    /**
     * 插入菜单数据
     *
     * @param dto 菜单实体
     */
    void save(SysMenuDTO dto);

    /**
     * 更新菜单数据
     *
     * @param dto 菜单实体
     */
    void update(SysMenuDTO dto);

    /**
     * 更新菜单数据
     *
     * @param id 主键ID
     */
    void delete(Long id);

    /**
     * 菜单列表
     *
     * @param type 菜单类型
     * @return 菜单列表
     */
    List<SysMenuDTO> getAllMenuList(Integer type);

    /**
     * 根据用户信息和菜单类型，查询用户菜单列表
     *
     * @param user 用户
     * @param type 菜单类型
     * @return 菜单列表
     */
    List<SysMenuDTO> getUserMenuList(UserDetail user, Integer type);

    /**
     * 根据父菜单，查询子菜单
     *
     * @param pid 父菜单ID
     * @return 菜单列表
     */
    List<SysMenuDTO> getListPid(Long pid);
}
